/** 自定义组件 共同逻辑 */
export default {
  data () {
    return {
      /** 定义类型 Number Array String */
      dataValue: this.typex === 'XRate' ||
        this.typex === 'XSlider' ||
        this.attrs.xType === Number
        ? 0
        : this.typex === 'XCheckbox' ||
          this.typex === 'XFiles' ||
          this.typex === 'XFiles2' ||
          this.attrs.xType === Array
          ? [] : ''
    }
  },
  watch: {
    value: function (val) {
      this.dataValue = val
    }
  },
  props: {
    value: {
      type: [String, Number, Boolean, Array, Object],
      default: undefined
    },
    disabled: {
      type: Boolean,
      default: false
    },
    /** 索引值 用于更新数据 */
    index: {
      type: [String, Number],
      required: true
    },
    /** 系统内置控件类型 XInput ... */
    typex: String,
    /** 列名字 用于显示 请输入xxx ... */
    label: String,
    /** 属性, 可能有 n 个值 ... */
    attrs: {
      type: Object,
      default: () => ({})
    }
  },

  mounted () {
    // 初始化 使用传进来的值显示
    this.dataValue = this.value
  },

  methods: {
    // 输入的值
    valueChange (value) {
      this.$emit('valueChange', value)
    },
    blur (value) {
      this.$emit('blur', value)
    },
    click (value) {
      this.$emit('click', value)
    },
    // 校验前调用这个方法 如果返回 false 则会提交失败
    beforeValidate () { }
  }

}
